Massively parallel processing (MPP) is the coordinated processing of a program by multiple processors, with each processor working on different parts of the program. The processors communicate with one another to complete a task, with each of them using its own operating system and memory resources. MPP systems may be built to scale to a large number of data nodes.
In an MPP system, an administrator distributes data for distributed computing applications to a number of processors, called partitions or data nodes. For example, an MPP database system facilitates distributing database data to multiple data nodes for query processing in a parallel and distributed manner.
An MPP system may use a cluster subsystem as a foundation to provide high availability to the upper layer software programs, such as database/application servers or applications, running in a cluster environment. It is problematic to provide both scalability of the cluster, in terms of the number of nodes, and high availability. In one example, database clusters are flat, and hence support limited numbers of nodes. For examples, shared disk clusters may support up to 32 nodes, and shared nothing clusters support 128 nodes. Another example cluster scales well but has limited high availability because of loosely coupled high availability architecture. An additional example is more like multi-master client server high availability architecture, with limited high availability following max-quorum protocol on selected servers.